package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.FormaPagamentoDao;
import com.model.FormaPagamento;

public class FormaPagamentoFacade implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private FormaPagamentoDao formaPagamentoDao = new FormaPagamentoDao();

	public void createFormaPagamento(FormaPagamento formaPagamento) {
		formaPagamentoDao.beginTransaction();
		formaPagamentoDao.save(formaPagamento);
		formaPagamentoDao.commitAndCloseTransaction();
	}

//	public void updateFormaPagamento(FormaPagamento formaPagamento) {
//		formaPagamentoDao.beginTransaction();
//		FormaPagamento persistedFormaPagamento = formaPagamentoDao.find(formaPagamento.getId());
//		persistedFormaPagamento.setName(formaPagamento.getName());
//		persistedFormaPagamento.setAge(formaPagamento.getAge());
//		formaPagamentoDao.commitAndCloseTransaction();
//	}
	
	public void deleteFormaPagamento(FormaPagamento formaPagamento){
		formaPagamentoDao.beginTransaction();
		FormaPagamento persistedFormaPagamentoWithIdOnly = formaPagamentoDao.findReferenceOnly(formaPagamento.getIdFormaPagamento());
		formaPagamentoDao.delete(persistedFormaPagamentoWithIdOnly);
		formaPagamentoDao.commitAndCloseTransaction();
		
	}

	public FormaPagamento findFormaPagamento(int formaPagamentoId) {
		formaPagamentoDao.beginTransaction();
		FormaPagamento formaPagamento = formaPagamentoDao.find(formaPagamentoId);
		formaPagamentoDao.closeTransaction();
		return formaPagamento;
	}

	public List<FormaPagamento> listAll() {
		formaPagamentoDao.beginTransaction();
		List<FormaPagamento> result = formaPagamentoDao.findAll();
		formaPagamentoDao.closeTransaction();

		return result;
	}

//	public FormaPagamento findFormaPagamentoWithAllDogs(int formaPagamentoId) {
//		formaPagamentoDao.beginTransaction();
//		FormaPagamento formaPagamento = formaPagamentoDao.findFormaPagamentoWithAllDogs(formaPagamentoId);
//		formaPagamentoDao.closeTransaction();
//		return formaPagamento;
//	}
//
//	public void addDogToFormaPagamento(int dogId, int formaPagamentoId) {
//		formaPagamentoDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		FormaPagamento formaPagamento = formaPagamentoDao.find(formaPagamentoId);
//		formaPagamento.getDogs().add(dog);
//		dog.getFormaPagamento().add(formaPagamento);
//		formaPagamentoDao.commitAndCloseTransaction();
//	}
//
//	public void removeDogFromFormaPagamento(int dogId, int formaPagamentoId) {
//		formaPagamentoDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		FormaPagamento formaPagamento = formaPagamentoDao.find(formaPagamentoId);
//		formaPagamento.getDogs().remove(dog);
//		dog.getFormaPagamento().remove(formaPagamento);
//		formaPagamentoDao.commitAndCloseTransaction();
//	}
}